package com.omt.tarjimdinek.domain.user.dao;

import java.lang.annotation.Inherited;

import javax.inject.Named;
import javax.inject.Singleton;
import javax.persistence.Inheritance;
import javax.persistence.Query;

import com.omt.tarjimdinek.domain.user.entity.Utilisateur;
import com.omt.tarjimdinek.support.GenericDao;

/**
 * JPA 2 Data Access Object for {@link UtilisateurDao}.
 * Note: do not use @Transactional in the DAO layer.
 */
@Named("accountDao")
@Singleton
public class UtilisateurDao extends GenericDao<Utilisateur, Long> implements IUtilisateurDao {
	
    public UtilisateurDao() {
        super(Utilisateur.class);
    }
    
    /**
     * {@inheritDoc}
     */
    public Utilisateur findUtilisateurByCriteria(UtilisateurCriteria aCriteria){
    	
    	StringBuffer lQuerySelect = new StringBuffer("SELECT DISTINCT u FROM Utilisateur u ");
    	StringBuffer lQueryWhere  = new StringBuffer(" WHERE ");
    	lQueryWhere.append(" u.login = :username ");
    	
    	StringBuffer lQueryString = new StringBuffer();
    	lQueryString.append(lQuerySelect);
    	lQueryString.append(lQueryWhere);
    	
    	Query lQuery = getEntityManager().createQuery(lQueryString.toString());
    	lQuery.setParameter("username", aCriteria.getUserName());
    	Utilisateur lUtilisateur = null;
    	try {
    		 lUtilisateur = (Utilisateur) lQuery.getSingleResult();
    	} catch(Exception e){
    	}
    	return lUtilisateur;
    }
}